package br.org.acessobrasil.portal.modelo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * Por decisao de projeto a lista de ItemConteudo foi removida desta classe 
 */
@Entity
@Table(name = "sgctb_conteudo" )
public class Conteudo implements Serializable,Cloneable{
	private static final long serialVersionUID = 3698714581233851022L;
	@Transient
	public static final Long ORDENAR_POR_TITULO = 1L;
	@Transient
	public static final Long ORDENAR_POR_ID = 2L;
	@Transient
	public static final Long ORDENAR_POR_DATA_PUBLICACAO = 3L;
	@Transient
	public static final Long ORDENAR_MANUAL = 4L;
	
	@Id
	@GeneratedValue
	private Long nu_conteudo;
	private Long nu_tipo_conteudo;
	private String no_conteudo;
	@Column(length=1000)
	private String de_cabecalho;
	private Long nu_pagina ;
	private Long nu_usuario;
	private boolean co_ordem_decrescente;
	private Long nu_tipo_ordenacao;
	
	
	@Transient
	private boolean utilizadoNoTemplate;
	
	//*
	@ManyToOne
	@JoinColumn(name="nu_pagina", updatable = false, insertable = false)
	private Pagina pagina;
	//*/
	
	@ManyToOne
	@JoinColumn(name="nu_usuario", updatable = false, insertable = false)
	private Usuario usuario;
	
	@ManyToOne
	@JoinColumn(name = "nu_sitio")
	private Sitio sitio;
	
	@ManyToOne
	@JoinColumn(name = "nu_tipo_conteudo", updatable = false, insertable = false)
	private TipoConteudo tipoConteudo;
	
	/**
	 * Serve quando &eacute; o usu&aacute;rio n&atilde;o autenticado faz uma busca que 
	 * requer que o resultado aponte para o item aberto
	 * e n&atilde;o para a p&aacute;gina.
	 */
	@Column(name="link_template_item_aberto")
	private String linkTemplateItemAberto;
	
	public boolean isUtilizadoNoTemplate() {
		return utilizadoNoTemplate;
	}
	
	public void setUtilizadoNoTemplate(boolean utilizadoNoTemplate) {
		this.utilizadoNoTemplate = utilizadoNoTemplate;
	}
	
	public String getLinkTemplateItemAberto() {
		return linkTemplateItemAberto;
	}
	
	public void setLinkTemplateItemAberto(String linkTemplateItemAberto) {
		this.linkTemplateItemAberto = linkTemplateItemAberto;
	}
	
	public Long getNuConteudo() {
		return nu_conteudo;
	}
	public void setNuConteudo(Long nu_conteudo) {
		this.nu_conteudo = nu_conteudo;
	}
	public Long getNuTipoConteudo() {
		return nu_tipo_conteudo;
	}
	public void setNuTipoConteudo(Long nu_tipo_conteudo) {
		this.nu_tipo_conteudo = nu_tipo_conteudo;
	}
	public String getNoConteudo() {
		return no_conteudo;
	}
	public void setNoConteudo(String no_conteudo) {
		this.no_conteudo = no_conteudo;
	}
	public String getDeCabecalho() {
		return de_cabecalho; 
	}
	public void setDeCabecalho(String de_cabecalho) {
		this.de_cabecalho = de_cabecalho;
	}
	public Long getNuPagina() {
		return nu_pagina;
	}
	public void setNuPagina(Long nu_pagina) {
		this.nu_pagina = nu_pagina;
	}
	public Long getNuUsuario() {
		return nu_usuario;
	}
	public void setNuUsuario(Long nu_usuario) {
		this.nu_usuario = nu_usuario;
	}
	public TipoConteudo getTipoConteudo(){
		return tipoConteudo;
	}
	public void setTipoConteudo(TipoConteudo tipoConteudo) {
		this.tipoConteudo = tipoConteudo;
	}
	
	public boolean isCoOrdemDecrescente() {
		return co_ordem_decrescente;
	}
	public void setCoOrdemDecrescente(boolean co_ordem_decrescente) {
		this.co_ordem_decrescente = co_ordem_decrescente;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public Pagina getPagina() {
		return pagina;
	}
	public void setPagina(Pagina pagina) {
		this.pagina = pagina;
	}
	
	public Long getNuTipoOrdenacao() {
		return nu_tipo_ordenacao;
	}
	public void setNuTipoOrdenacao(Long nuTipoOrdenacao) {
		nu_tipo_ordenacao = nuTipoOrdenacao;
	}
	
	public Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	public Sitio getSitio() {
		return sitio;
	}
	public void setSitio(Sitio sitio) {
		this.sitio = sitio;
	}	
}